﻿namespace ChangchunPublicInterfacs;

/// <summary>
/// 辅助功能模块
/// </summary>
public interface IAuxiliaryFunction
{
    /// <summary>
    /// 天气预报
    /// </summary>
    /// <param name="location">要查询天气的地点</param>
    /// <returns>天气预报</returns>
    Task<WeatherForecastResult> WeatherForecastAsync(Point location);

    /// <summary>
    /// 创建地图标绘
    /// </summary>
    /// <param name="user">用户登录信息</param>
    /// <param name="draft">地图标绘对象</param>
    /// <returns>创建结果</returns>
    Task<CreateUserDraftResult> CreateUserDraftAsync(User user, Draft draft);

    /// <summary>
    /// 删除地图标绘
    /// </summary>
    /// <param name="user">用户登录信息</param>
    /// <param name="draftID">地图标绘对象ID</param>
    /// <returns>删除结果</returns>
    Task<DeleteUserDraftResult> DeleteUserDraftAsync(User user, int draftID);

    /// <summary>
    /// 获取地图标绘（浅拷贝）
    /// </summary>
    /// <param name="user">用户登录信息</param>
    /// <param name="draftID">地图标绘ID</param>
    /// <returns>查询结果</returns>
    Task<GetUserDraftResult> QueryUserDraftAsync(User user, int draftID);

    /// <summary>
    /// 更新地图标绘
    /// </summary>
    /// <param name="user">用户登录信息</param>
    /// <param name="draftID">地图标绘对象ID</param>
    /// <param name="draft">地图标绘对象</param>
    /// <returns>更新结果</returns>
    Task<UpdateUserDraftResult> UpdateUserDraftAsync(User user, Draft draft);

    /// <summary>
    /// 获取用户所有的地图标绘列表（浅拷贝）
    /// </summary>
    /// <param name="user">用户登录信息</param>
    /// <returns>查询结果</returns>
    Task<QueryUserDraftListResult> QueryUserDraftListAsync(User user);

    /// <summary>
    /// 获取地图标绘（深拷贝）
    /// </summary>
    /// <param name="draft">要获取的地图标绘</param>
    /// <param name="user">用户登录信息</param>
    /// <returns>查询结果</returns>
    Task<GetUserDraftResult> QueryDeepCopyOf(int draftID, User user);
}
